package com.ruoyi.common.utils;

import java.io.File;
import java.util.Arrays;

public class ImageCleaner {

    public static void main(String[] args) {
        String rootDirectoryPath = "E:\\Object_3k-pop"; // 替换为你的根文件夹路径
        File rootDirectory = new File(rootDirectoryPath);

        if (rootDirectory.exists() && rootDirectory.isDirectory()) {
            cleanUpImages(rootDirectory);
        } else {
            System.out.println("Invalid directory.");
        }
    }

    public static void cleanUpImages(File directory) {
        // 获取当前目录下的所有文件和文件夹
        File[] files = directory.listFiles();

        if (files != null) {
            // 遍历每一个文件和文件夹
            for (File file : files) {
                if (file.isDirectory()) {
                    // 如果是文件夹，递归调用cleanUpImages
                    cleanUpImages(file);
                } else if (isImageFile(file)) {
                    // 如果是图片文件，处理该图片
                    handleImage(file);
                }
            }
        }
    }

    // 判断文件是否是图片类型
    public static boolean isImageFile(File file) {
        String[] imageExtensions = {"jpg", "jpeg", "png", "gif", "bmp"};
        String fileName = file.getName().toLowerCase();
        return Arrays.stream(imageExtensions).anyMatch(fileName::endsWith);
    }

    // 处理文件夹中的图片，保留最多10张
    public static void handleImage(File imageFile) {
        File parentDir = imageFile.getParentFile();

        // 获取文件夹下所有的图片文件
        File[] images = parentDir.listFiles((dir, name) -> isImageFile(new File(dir, name)));

        if (images != null && images.length > 10) {
            // 排序并删除多余的图片，保留前10张
            Arrays.sort(images, (f1, f2) -> Long.compare(f1.lastModified(), f2.lastModified()));

            for (int i = 10; i < images.length; i++) {
                if (images[i].delete()) {
                    System.out.println("Deleted: " + images[i].getName());
                } else {
                    System.out.println("Failed to delete: " + images[i].getName());
                }
            }
        }
    }
}
